RISC

您所在的位置:网站首页 risc-v架构与嵌入式开发快速入门 pdf 下载 RISC

RISC

2023-06-08 17:02| 来源: 网络整理| 查看: 265

编辑推荐

为了促进RISC-V在国内的普及,尤其是被广大初学者接受和快速入门,本书将分享和总结一些使用RISC-V进行嵌入式开发的相关技术和经验,主要面向对RISC-V感兴趣的入门用户,包括嵌入式软件开发和硬件设计人员。 本书的姊妹版《手把手教你设计CPU——RISC-V处理器篇》已经出版,提供了一个非常高效的超低功耗开源RISC-V处理器学习案例——蜂鸟E203,并对其进行了全方面剖析和讲解,解决了在CPU硬件设计方面中文资料欠缺的问题。;

内容简介

本书是一本介绍RISC-V架构嵌入式开发的入门书籍,以通俗的语言系统介绍了嵌入式开发的基础知识和RISC-V架构的内容,力求帮助读者快速掌握RISC-V架构的嵌入式开发技术。 本书共分为两部分。*部分为第1~14章,基本涵盖了使用RISC-V架构进行嵌入式开发所需的所有关键知识。第二部分为附录部分,详细介绍了RISC-V指令集架构,辅以作者加入的背景知识解读和注解,以便于读者理解。

作者简介

胡振波,本科毕业于上海交通大学电子工程系,硕士毕业于上海交通大学微电子学院。拥有多年ASIC和CPU设计与验证经验,曾在Marvell公司任ARM架构CPU设计高级工程师,在Synopsys公司任研发经理,在比特大陆公司任IC设计总监,在武汉聚芯微电子公司任架构师,现致力于RISC-V架构在国内的传播和发展。他开发并开源了蜂鸟E203超低功耗RISC-V处理器内核。

RISC-V架构与嵌入式开发快速入门 PDF下载

目录 第 1章 进入32位时代,谁能成为下一个805111.1 磨刀不误砍柴工—CPU基础知识介绍11.1.1 ISA—CPU的灵魂21.1.2 CISC与RISC31.1.3 32位与64位架构41.1.4 ISA众生相51.1.5 CPU的领域之分91.1.6 8位时代的传奇“前辈”—8051101.1.7 IoT的崛起—32位时代的到来111.2 无敌是多么寂寞—ARM统治着的世界111.2.1 独乐乐与众乐乐—ARM公司的盈利模式121.2.2 小个子有大力量—无处不在的Cortex-M系列141.2.3 移动王者—Cortex-A系列在手持设备领域的巨大成功161.2.4 进击的巨人—ARM进军PC与服务器领域的雄心181.2.5 游戏终结者之ARM191.3 东边日出西边雨,道是无晴却有晴—RISC-V登场191.4 RISC-V和其他开放架构有何不同211.4.1 “平民英雄”—OpenRISC221.4.2 “豪门显贵”—SPARC221.4.3 “名校优生”—RISC-V231.5 结语:进入32位时代,谁能成为深嵌入式领域的下一个8051?23第 2章 开源蜂鸟E203超低功耗RISC-V Core与SoC252.1 乱花渐欲迷人眼252.2 与众不同的蜂鸟E203处理器252.3 蜂鸟虽小,五脏俱全—蜂鸟E203简介262.4 蜂鸟E203性能指标272.5 蜂鸟E203配套SoC28第3章 大道至简—RISC-V架构之魂293.1 简单就是美—RISC-V架构的设计哲学293.1.1 无病一身轻—架构的篇幅303.1.2 能屈能伸—模块化的指令集313.1.3 浓缩的都是精华—指令的数量313.2 RISC-V指令集架构简介323.2.1 模块化的指令子集323.2.2 可配置的通用寄存器组333.2.3 规整的指令编码333.2.4 简洁的存储器访问指令343.2.5 高效的分支跳转指令353.2.6 简洁的子程序调用363.2.7 无条件码执行363.2.8 无分支延迟槽373.2.9 零开销硬件循环373.2.10 简洁的运算指令383.2.11 优雅的压缩指令子集383.2.12 特权模式393.2.13 CSR寄存器403.2.14 中断和异常403.2.15 矢量指令子集403.2.16 自定制指令扩展403.2.17 总结与比较41第4章 RISC-V架构的中断和异常434.1 中断和异常概述434.1.1 中断概述434.1.2 异常概述444.1.3 广义上的异常444.2 RISC-V架构异常处理机制464.2.1 进入异常474.2.2 退出异常504.2.3 异常服务程序504.3 RISC-V架构中断定义514.3.1 中断类型514.3.2 中断屏蔽544.3.3 中断等待554.3.4 中断优先级与仲裁554.3.5 中断嵌套564.3.6 总结比较574.4 RISC-V架构异常相关CSR寄存器574.5 蜂鸟E203的中断和异常实现58第5章 开源蜂鸟E203 MCU SoC总体介绍595.1 Freedom E310 SoC简介595.2 蜂鸟E203 MCU SoC简介605.3 蜂鸟E203 MCU SoC框图605.4 蜂鸟E203 MCU SoC存储资源615.4.1 片上存储资源615.4.2 片外Flash存储资源615.5 蜂鸟E203 MCU SoC外设资源625.6 蜂鸟E203 MCU SoC地址分配625.7 蜂鸟E203 MCU SoC时钟域划分635.8 蜂鸟E203 MCU SoC电源域划分645.9 蜂鸟E203 MCU SoC低功耗模式645.10 蜂鸟E203 MCU SoC的全局复位655.11 蜂鸟E203 MCU SoC的上电流程控制665.12 蜂鸟E203 MCU SoC芯片引脚表675.13 蜂鸟E203 MCU SoC的GPIO引脚分配685.14 蜂鸟E203 MCU SoC的中断处理705.14.1 蜂鸟E203处理器核的异常和中断处理705.14.2 蜂鸟E203处理器的中断接口715.14.3 CLINT模块生成计时器中断和软件中断725.14.4 PLIC管理多个外部中断73第6章 开源蜂鸟E203 MCU SoC外设介绍776.1 蜂鸟E203 MCU SoC外设总述776.2 PLIC786.3 CLINT786.4 LCLKGEN786.4.1 LCLKGEN简介786.4.2 LCLKGEN寄存器列表786.5 HCLKGEN796.5.1 HCLKGEN简介796.5.2 HCLKGEN寄存器列表796.6 GPIO796.6.1 GPIO特性796.6.2 GPIO寄存器列表806.6.3 I O结构和IOF模式806.6.4 SoC各外设复用GPIO引脚836.6.5 GPIO中断836.6.6 GPIO_VALUE寄存器846.6.7 GPIO_INPUT_EN寄存器846.6.8 GPIO_OUTPUT_EN寄存器856.6.9 GPIO_PORT寄存器856.6.10 GPIO_PUE寄存器856.6.11 GPIO_DS寄存器856.6.12 GPIO_OUTPUT_XOR寄存器856.6.13 GPIO_RISE_IE、GPIO_RISE_IP等寄存器856.7 SPI866.7.1 SPI背景知识简介866.7.2 SPI特性886.7.3 SPI寄存器列表896.7.4 SPI接口数据线906.7.5 通过SPI_SCKDIV寄存器配置SCK时钟频率906.7.6 通过SPI_SCKMODE寄存器配置SCK的极性与相位906.7.7 通过SPI_CSID寄存器配置SPI使能信号926.7.8 通过SPI_CSDEF寄存器配置使能信号的空闲值926.7.9 通过SPI_CSMODE寄存器配置使能信号的行为926.7.10 通过SPI_DELAY0和SPI_DELAY1寄存器配置使能信号的行为936.7.11 通过SPI_FCTRL寄存器使能QSPI0的Flash XiP模式946.7.12 通过SPI_FFMT寄存器控制QSPI0读取外部Flash956.7.13 通过SPI_FMT寄存器配置传输参数976.7.14 通过SPI_TXDATA寄存器发送数据976.7.15 通过SPI_RXDATA寄存器接收数据986.7.16 通过SPI_TXMARK寄存器配置发送中断阈值1006.7.17 通过SPI_RXMARK寄存器配置接收中断阈值1006.7.18 通过SPI_IE和SPI_IP寄存器控制中断1016.8 I2C1026.8.1 I2C背景知识简介1026.8.2 I2C特性1036.8.3 I2C寄存器列表1036.8.4 I2C接口数据线1046.8.5 通过I2C_PRERlo和I2C_PRERhi寄存器配置SCL时钟频率1046.8.6 通过I2C_CTR寄存器配置功能和中断使能1046.8.7 I2C模块产生中断1056.8.8 通过I2C_TXR和I2C_RXR寄存器发送和接收数据1056.8.9 通过I2C_CR和I2C_SR寄存器发起命令和查看状态1066.8.10 初始化I2C模块的序列1076.8.11 通过I2C模块向外部从设备写数据的常用序列1076.8.12 通过I2C模块从外部从设备读数据的常用序列1086.9 UART1096.9.1 UART背景知识简介1096.9.2 UART特性1106.9.3 UART寄存器列表1106.9.4 UART接口数据线1116.9.5 通过UART_TXDATA寄存器发送数据1116.9.6 通过UART_RXDATA寄存器接收数据1126.9.7 通过UART_TXCTRL寄存器进行发送控制1136.9.8 通过UART_RXCTRL寄存器进行接收控制1136.9.9 通过UART_IE和UART_IP寄存器控制中断1146.9.10 通过UART_DIV寄存器配置波特率1156.10 PWM1166.10.1 PWM背景知识简介1166.10.2 PWM特性和结构图1166.10.3 PWM寄存器列表1176.10.4 通过PWMCFG寄存器进行配置1186.10.5 计数器计数值PWMCOUNT寄存器和PWM周期1196.10.6 计数器比较值PWMS寄存器1206.10.7 PWM接口数据线1216.10.8 产生左对齐或者右对齐的脉冲信号1216.10.9 产生居中对齐的脉冲信号1226.10.10 配置pwmcmp gang结连产生任意形状的脉冲信号124 6.10.11 配置pwmdeglitch防止输出毛刺124 6.10.12 PWM产生中断124 6.11 WDT125 6.11.1 WDT背景知识简介125 6.11.2 WDT特性和结构图125 6.11.3 WDT寄存器列表126 6.11.4 通过WDOGCFG寄存器进行配置127 6.11.5 计数器计数值WDOGCOUNT寄存器128 6.11.6 通过WDOGKEY寄存器解锁128 6.11.7 通过WDOGFEED寄存器喂狗129 6.11.8 计数器比较值WDOGS寄存器129 6.11.9 通过WDOGCMP寄存器配置阈值130 6.11.10 WDT产生全局复位130 6.11.11 WDT产生中断130 6.12 RTC131 6.12.1 RTC背景知识简介131 6.12.2 RTC特性和结构图131 6.12.3 RTC寄存器列表131 6.12.4 通过RTCCFG寄存器进行配置132 6.12.5 计数器计数值RTCHI RTCLO寄存器133 6.12.6 计数器比较值RTCS寄存器133 6.12.7 通过RTCCMP寄存器配置阈值134 6.12.8 RTC产生中断134 6.13 PMU134 6.13.1 PMU背景知识简介134 6.13.2 PMU特性和结构图135 6.13.3 PMU寄存器列表136 6.13.4 通过PMUKEY寄存器解锁136 6.13.5 通过PMUSLEEP寄存器进入休眠模式137 6.13.6 通过PMUSLEEPI 寄存器配置休眠指令序列137 6.13.7 通过PMUBACKUP 寄存器保存关键信息139 6.13.8 通过PMUIE寄存器配置唤醒条件139 6.13.9 通过PMUWAKEUPI 寄存器配置唤醒指令序列140 6.13.10 通过PMUCAUSE寄存器查看唤醒原因141 第7章 开源蜂鸟E203 MCU开发板与调试器143 7.1 蜂鸟E203 MCU开发板143 7.2 蜂鸟E203 JTAG调试器143 第8章 编译过程简介145 8.1 GCC工具链介绍145 8.1.1 GCC工具链概述145 8.1.2 Binutils146 8.1.3 C运行库147 8.1.4 GCC命令行选项148 8.2 准备工作148 8.2.1 Linux安装148 8.2.2 准备Hello World程序148 8.3 编译过程149 8.3.1 预处理149 8.3.2 编译150 8.3.3 汇编150 8.3.4 链接151 8.3.5 一步到位的编译153 8.4 分析ELF文件153 8.4.1 ELF文件介绍153 8.4.2 ELF文件的段154 8.4.3 查看ELF文件154 8.4.4 反汇编155 8.5 嵌入式系统编译的特殊性156 8.6 本章小结156 第9章 嵌入式开发特点与RISC-V GCC工具链158 9.1 嵌入式系统开发特点158 9.1.1 交叉编译和远程调试158 9.1.2 移植newlib或newlib-nano作为C运行库159 9.1.3 嵌入式引导程序和中断异常处理160 9.1.4 嵌入式系统链接脚本160 9.1.5 减少代码体积161 9.1.6 支持printf函数161 9.1.7 提供板级支持包162 9.2 RISC-V GCC工具链简介162 9.2.1 RISC-V GCC工具链种类162 9.2.2 riscv-none-embed工具链下载163 9.2.3 RISC-V GCC工具链的(?Cmarch=)和(?Cmabi=)选项164 9.2.4 RISC-V GCC工具链的(?Cmcmodel=)选项168 9.2.5 RISC-V GCC工具链的其他选项169 9.2.6 RISC-V GCC工具链的预定义宏170 9.2.7 RISC-V GCC工具链使用实例170 第 10章 RISC-V汇编语言程序设计171 10.1 汇编语言简介171 10.2 RISC-V汇编程序概述172 10.3 RISC-V汇编指令173 10.4 RISC-V汇编程序伪操作173 10.5 RISC-V汇编程序示例177 10.5.1 定义标签177 10.5.2 定义宏178 10.5.3 定义常数178 10.5.4 立即数赋值178 10.5.5 标签地址赋值179 10.5.6 设置浮点舍入模式179 10.5.7 完整实例180 10.6 在C C 程序中嵌入汇编181 10.6.1 GCC内联汇编简述181 10.6.2 GCC内联汇编“输出操作数”和“输入操作数”部分182 10.6.3 GCC内联汇编“可能影响的寄存器或存储器”部分183 10.6.4 GCC内联汇编参考实例一184 10.6.5 GCC内联汇编参考实例二185 10.6.6 小结186 10.7 在汇编中调用C C 函数186 10.8 本章小结187 第 11章 基于HBird-E-SDK平台的软件开发与运行188 11.1 HBird-E-SDK平台简介188 11.2 HBird-E-SDK平台代码结构189 11.3 HBird-E-SDK板级支持包解析190 11.3.1 移植了Newlib桩函数190 11.3.2 支持了printf函数192 11.3.3 提供系统链接脚本193 11.3.4 系统启动引导程序198 11.3.5 系统异常和中断处理202 11.3.6 减少代码体积206 11.4 使用HBird-E-SDK开发和编译程序208 11.4.1 在HBird-E-SDK环境中安装工具链208 11.4.2 在HBird-E-SDK环境中开发程序210 11.4.3 编译使得程序从Flash直接运行211 11.4.4 编译使得程序从ITCM中运行212 11.4.5 编译使得程序从Flash上载至ITCM中运行213 11.5 使用HBird-E-SDK下载程序213 11.5.1 JTAG调试器与MCU原型开发板的连接213 11.5.2 设置JTAG调试器在Linux系统中的USB权限214 11.5.3 将程序下载至MCU原型开发板216 11.6 在MCU原型开发板上运行程序216 11.6.1 程序从Flash直接运行217 11.6.2 程序从ITCM中运行217 11.6.3 程序从Flash上载至ITCM中运行218 11.7 使用GDB远程调试程序218 11.7.1 调试器工作原理218 11.7.2 GDB常用操作示例220 11.7.3 使用GDB调试Hello World示例221 第 12章 开源蜂鸟E203 MCU的更多示例程序226 12.1 Dhrystone示例程序226 12.1.1 Dhrystone示例程序功能简介226 12.1.2 Dhrystone示例程序代码结构229 12.1.3 运行Dhrystone229 12.2 CoreMark示例程序231 12.2.1 CoreMark示例程序功能简介231 12.2.2 CoreMark示例程序代码结构232 12.2.3 运行CoreMark233 12.3 Demo_IASM示例程序234 12.3.1 Demo_IASM示例程序功能简介234 12.3.2 Demo_IASM示例程序代码结构234 12.3.3 Demo_IASM示例程序源码解析235 12.3.4 运行Demo_IASM235 12.4 Demo_GPIO示例程序236 12.4.1 Demo_GPIO示例程序功能简介236 12.4.2 Demo_GPIO示例程序代码结构237 12.4.3 Demo_GPIO示例程序源码分析237 12.4.4 运行Demo_GPIO243 12.5 中断嵌套244 第 13章 Windows IDE集成开发调试环境245 13.1 MCU Eclipse IDE简介与安装245 13.1.1 MCU Eclipse IDE简介245 13.1.2 RISC-V MCU Eclipse下载246 13.1.3 RISC-V MCU Eclipse安装247 13.2 启动Eclipse248 13.3 创建Hello World项目249 13.4 配置Hello World项目253 13.4.1 配置工具链路径253 13.4.2 配置项目的编译和链接选项256 13.4.3 配置项目的BSP262 13.4.4 配置项目的包含路径和文件265 13.5 编译Hello World项目267 13.6 运行Hello World项目269 13.6.1 安装JTAG调试器在Windows系统中的USB驱动269 13.6.2 通过Eclipse下载程序至MCU开发板270 13.6.3 在MCU开发板上运行程序274 13.7 调试Hello World项目276 13.8 拓展一:基于MCU Eclipse运行调试demo_gpio示例280 13.9 拓展二:基于MCU Eclipse运行调试dhrystone示例281 第 14章 开源蜂鸟E203 MCU开发板移植RTOS283 14.1 RTOS简述283 14.2 常用实时操作系统概述284 14.3 FreeRTOS简介285 14.4 蜂鸟E203 MCU移植RTOS286 附录A RISC-V架构指令集介绍287 A.1 RV32GC架构概述287 A.2 RV32E架构概述288 A.3 蜂鸟E203支持的指令列表288 A.4 寄存器组288 A.4.1 通用寄存器组289 A.4.2 CSR寄存器290 A.5 指令PC290 A.6 寻址空间划分290 A.7 大端格式或小端格式290 A.8 工作模式290 A.9 Hart概念291 A.10 复位状态291 A.11 中断和异常292 A.12 存储器地址管理292 A.13 存储器模型292 A.14 指令类型293 A.14.1 RV32IMAFDC指令列表293 A.14.2 基本整数指令(RV32I)293 A.14.3 整数乘法和除法指令(RV32M指令子集)302 A.14.4 浮点指令(RV32F,RV32D指令子集)304 A.14.5 存储器原子操作指令(RV32A指令子集)315 A.14.6 16位压缩指令(RV32C指令子集)318 A.15 伪指令320 A.16 指令编码320 附录B RISC-V架构CSR寄存器介绍321 B.1 蜂鸟E203支持的CSR寄存器列表321 B.2 RISC-V标准CSR322 B.2.1 misa322 B.2.2 mvendorid323 B.2.3 marchid323 B.2.4 mimpid323 B.2.5 mhartid324 B.2.6 fflags324 B.2.7 frm324 B.2.8 fcsr324 B.2.9 mstatus324 B.2.10 mtvec326 B.2.11 mepc326 B.2.12 mcause327 B.2.13 mtval (mbadaddr)327 B.2.14 mie328 B.2.15 mip328 B.2.16 mscratch328 B.2.17 mcycle和mcycleh329 B.2.18 minstret和minstreth329 B.2.19 mtime、mtimecmp和msip329 B.3 蜂鸟E203自定义CSR330mcounterstop330 附录C RISC-V架构的PLIC介绍331 C.1 概述331 C.2 PLIC中断目标332PLIC中断目标之阈值333 C.3 PLIC中断源333 C.3.1 PLIC中断源之闸口(Gateway)和IP334 C.3.2 PLIC中断源之编号(ID)334 C.3.3 PLIC中断源之优先级(Priority)334 C.3.4 PLIC中断源之中断使能(Enable)334 C.4 PLIC中断处理机制335 C.4.1 PLIC中断通知机制(Notification)335 C.4.2 PLIC中断响应机制(Claim)335 C.4.3 PLIC中断完成机制(Completion)336 C.4.4 PLIC中断完整流程336 C.5 PLIC寄存器总结337 C.6 总结与比较339 附录D 存储器模型背景介绍340 D.1 为何要有存储器模型的概念340 D.2 存储器模型定义了什么341 D.2.1 按序一致性模型341 D.2.2 松散一致性模型342 D.2.3 释放一致性模型342 D.2.4 存储器模型总结342 D.3 存储器模型应用实例343 D.4 RISC-V架构的存储器模型344 附录E 存储器原子操作指令背景介绍345 E.1 什么是“上锁”问题345 E.2 通过原子操作解决“上锁”问题346 E.3 通过互斥操作解决“上锁”问题346 E.4 RISC-V架构的相关指令348 附录F RISC-V指令编码列表349 F.1 RV32I指令编码349 F.2 RV32M指令编码350 F.3 RV32A指令编码350 F.4 RV32F指令编码350 F.5 RV32D指令编码351 F.6 RVC指令编码351 附录G RISC-V伪指令列表353 媒体评论

RISC-V由于其开放性和先进性,短时间内便在业界引发了强烈的共鸣。放眼未来,RISC-V架构或将成为一支劲旅,与x86、ARM这两个主流架构并驾齐驱,有助于中国实现自主可控且创新的CPU。RISC-V在全球技术界风靡,可在国内还缺少系统性的中文资料,尤其是关于RISC-V架构和嵌入式软件开发的中文资料非常欠缺。本书的出现恰逢其时,解决了广大RISC-V爱好者、开发者学习RISC-V的燃眉之急,对于RISC-V在国内的普及和落地有着重要的意义。 ——中国RISC-V产业联盟(CRVIC)秘书长

RISC-V架构与嵌入式开发快速入门 pdf下载声明

本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版

pdf下载地址

版权归出版社和作者所有,下载链接已删除。如果喜欢,请购买正版!

链接地址:RISC-V架构与嵌入式开发快速入门



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3